package com.atguigu.test.scope;

import org.springframework.beans.factory.ObjectFactory;
import org.springframework.context.annotation.Scope;
import org.springframework.context.annotation.ScopedProxyMode;
import org.springframework.stereotype.Component;

/**
 * @author zp
 * @version 1.0
 * @description: 自定义作用域的测试类
 * 解决Scope失效的问题：
 * 1、在注入对象proxyMode= ScopedProxyMode.TARGET_CLASS
 * 创建代理对象 解决注入失败的问题
 * 2、在依赖注入的方法上面添加@Lazy 注解 可以让对象使用懒加载对象 让Scope注解生效
 * 3、使用代理工厂 完成bean对象的创建 注入ObjectFactory<ClassType> 如果注入bean工厂 如果获取的时候使用getObject 方法获取对象
 * 4、直接通过 ApplicationContext 的getBean方法 传入想获取的类型 获取bean 对象这样就可以解决scope失效
 * @date 2022/12/18 18:34
 */
@Component
@Scope(value = "prototype",proxyMode= ScopedProxyMode.TARGET_CLASS)
public class MyScopeBean {
    private String name;


    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}
